package org.deegree.igeo.desktop; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JTextPane; import javax.swing.ListModel; import org.deegree.igeo.i18n.Messages; import org.deegree.igeo.mapmodel.MapModel; import org.deegree.igeo.views.swing.util.IconRegistry; /** * * Dialog for selecting/opening an available map model * * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a> * * @author last edited by: $Author$ * * @version $Revision$, $Date$ * */ public class MapModelDialog extends javax.swing.JDialog { private static final long serialVersionUID = 4811300611179747978L; private JPanel pnDesc; private JPanel pnModels; private JTextPane tpDesp; private JList lstMapModels; private JButton btCancel; private JButton btOK; private JPanel pnButtons; private MapModel[] mapModels; /** * * @param parent * @param mapModels */ public MapModelDialog( Container parent, MapModel[] mapModels ) { this.mapModels = mapModels; initGUI(); setModal( true ); setVisible( true ); Rectangle rect = parent.getBounds(); setLocation( rect.x + rect.width / 2 - getWidth() / 2, rect.y + rect.height / 2 - getHeight() / 2 ); } private void initGUI() { try { GridBagLayout thisLayout = new GridBagLayout(); getContentPane().setLayout( thisLayout ); { pnDesc = new JPanel(); BorderLayout pnDescLayout = new BorderLayout(); pnDesc.setLayout( pnDescLayout ); getContentPane().add( pnDesc, new GridBagConstraints( 0, 0, 1, 2, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets( 0, 0, 0, 5 ), 0, 0 ) ); pnDesc.setBorder( BorderFactory.createTitledBorder( "map model selection" ) ); { tpDesp = new JTextPane(); pnDesc.add( tpDesp, BorderLayout.CENTER ); tpDesp.setText( Messages.get( "$DI10041" ) ); tpDesp.setBackground( new Color( 212, 208, 200 ) ); tpDesp.setEditable( false ); } } { pnModels = new JPanel(); BorderLayout pnModelsLayout = new BorderLayout(); pnModels.setLayout( pnModelsLayout ); getContentPane().add( pnModels, new GridBagConstraints( 1, 0, 1, 2, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets( 0, 5, 0, 0 ), 0, 0 ) ); pnModels.setBorder( BorderFactory.createTitledBorder( "available map models" ) ); { ListModel lstMapModelsModel = new DefaultComboBoxModel( mapModels ); lstMapModels = new JList(); pnModels.add( lstMapModels, BorderLayout.CENTER ); lstMapModels.setModel( lstMapModelsModel ); } } { pnButtons = new JPanel(); FlowLayout pnButtonsLayout = new FlowLayout(); pnButtonsLayout.setAlignment( FlowLayout.LEFT ); getContentPane().add( pnButtons, new GridBagConstraints( 0, 2, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets( 0, 0, 0, 0 ), 0, 0 ) ); pnButtons.setLayout( pnButtonsLayout ); { btOK = new JButton( "add map model", IconRegistry.getIcon( "accept.png" ) ); pnButtons.add( btOK ); btOK.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { dispose(); } } ); } { btCancel = new JButton( "cancel", IconRegistry.getIcon( "cancel.png" ) ); pnButtons.add( btCancel ); btCancel.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { lstMapModels.removeSelectionInterval( 0, mapModels.length - 1 ); dispose(); } } ); } } thisLayout.rowWeights = new double[] { 0.0, 0.0, 0.1 }; thisLayout.rowHeights = new int[] { 127, 124, 7 }; thisLayout.columnWeights = new double[] { 0.0, 0.1 }; thisLayout.columnWidths = new int[] { 178, 7 }; this.setSize( 414, 317 ); } catch ( Exception e ) { e.printStackTrace(); } } /** * * @return */ public MapModel getMapModel() { return (MapModel) lstMapModels.getSelectedValue(); } }